﻿using System;
namespace Producers.Karis.Xtee.Riik.Ee.Producer.Karis {
    
    
    [global::Xtee.Core.Attributes.XmlTypeAttribute(Name="isik", Namespace="http://producers.karis.xtee.riik.ee/producer/karis", Target=typeof(Isik))]
    public class IsikSerializer : global::Xtee.Core.Types.AbstractXteeSerializable {
        
        protected IIsik clazz;
        
        public IsikSerializer(IIsik clazz) {
            this.clazz = clazz;
        }
        
        public override void WriteXml(global::Xtee.Core.IXteeXmlWriter Writer) {
            base.WriteXml(Writer);
            Writer.WriteStartElement("ttIsik.iIsik_id");
            Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "integer");
            Writer.WriteString(new global::Xtee.Core.Schema.XsdInteger(((decimal)(clazz.TtIsikiIsikId))).ToString());
            Writer.WriteEndElement();
            Writer.WriteStartElement("ttIsik.iIsik_uniq_id");
            Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "integer");
            Writer.WriteString(new global::Xtee.Core.Schema.XsdInteger(((decimal)(clazz.TtIsikiIsikUniqId))).ToString());
            Writer.WriteEndElement();
            Writer.WriteStartElement("ttIsik.cIkood");
            if (clazz.TtIsikcIkood!=null) {
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "string");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdString(((string)(clazz.TtIsikcIkood))).ToString());
            }
            else {
                Writer.WriteAttributeString("xsi", "nil", null, "1");
            }
            Writer.WriteEndElement();
            Writer.WriteStartElement("ttIsik.cEes");
            if (clazz.TtIsikcEes!=null) {
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "string");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdString(((string)(clazz.TtIsikcEes))).ToString());
            }
            else {
                throw new global::Xtee.Core.Exceptions.NillableNotAllowedException("Nullable is not allowed for element : TtIsikcEes");
            }
            Writer.WriteEndElement();
            Writer.WriteStartElement("ttIsik.cPere");
            if (clazz.TtIsikcPere!=null) {
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "string");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdString(((string)(clazz.TtIsikcPere))).ToString());
            }
            else {
                throw new global::Xtee.Core.Exceptions.NillableNotAllowedException("Nullable is not allowed for element : TtIsikcPere");
            }
            Writer.WriteEndElement();
            Writer.WriteStartElement("ttIsik.cIsa");
            if (clazz.TtIsikcIsa!=null) {
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "string");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdString(((string)(clazz.TtIsikcIsa))).ToString());
            }
            else {
                Writer.WriteAttributeString("xsi", "nil", null, "1");
            }
            Writer.WriteEndElement();
            Writer.WriteStartElement("ttIsik.dSyn");
            if (clazz.TtIsikdSyn!=null) {
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "date");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdDate(((System.DateTime)(clazz.TtIsikdSyn))).ToString());
            }
            else {
                Writer.WriteAttributeString("xsi", "nil", null, "1");
            }
            Writer.WriteEndElement();
            Writer.WriteStartElement("ttIsik.cSynnikoht");
            if (clazz.TtIsikcSynnikoht!=null) {
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "string");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdString(((string)(clazz.TtIsikcSynnikoht))).ToString());
            }
            else {
                Writer.WriteAttributeString("xsi", "nil", null, "1");
            }
            Writer.WriteEndElement();
            Writer.WriteStartElement("ttIsik.cSynnikoht_lisa");
            if (clazz.TtIsikcSynnikohtLisa!=null) {
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "string");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdString(((string)(clazz.TtIsikcSynnikohtLisa))).ToString());
            }
            else {
                Writer.WriteAttributeString("xsi", "nil", null, "1");
            }
            Writer.WriteEndElement();
            Writer.WriteStartElement("ttIsik.cElukoht");
            if (clazz.TtIsikcElukoht!=null) {
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "string");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdString(((string)(clazz.TtIsikcElukoht))).ToString());
            }
            else {
                Writer.WriteAttributeString("xsi", "nil", null, "1");
            }
            Writer.WriteEndElement();
            Writer.WriteStartElement("ttIsik.cElukoht_lisa");
            if (clazz.TtIsikcElukohtLisa!=null) {
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "string");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdString(((string)(clazz.TtIsikcElukohtLisa))).ToString());
            }
            else {
                Writer.WriteAttributeString("xsi", "nil", null, "1");
            }
            Writer.WriteEndElement();
            Writer.WriteStartElement("ttIsik.cKodakondsus");
            if (clazz.TtIsikcKodakondsus!=null) {
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "string");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdString(((string)(clazz.TtIsikcKodakondsus))).ToString());
            }
            else {
                throw new global::Xtee.Core.Exceptions.NillableNotAllowedException("Nullable is not allowed for element : TtIsikcKodakondsus");
            }
            Writer.WriteEndElement();
            Writer.WriteStartElement("ttIsik.dSurm");
            if (clazz.TtIsikdSurm!=null) {
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "date");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdDate(((System.DateTime)(clazz.TtIsikdSurm))).ToString());
            }
            else {
                Writer.WriteAttributeString("xsi", "nil", null, "1");
            }
            Writer.WriteEndElement();
            Writer.WriteStartElement("ttIsik.cSugu");
            if (clazz.TtIsikcSugu!=null) {
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "string");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdString(((string)(clazz.TtIsikcSugu))).ToString());
            }
            else {
                throw new global::Xtee.Core.Exceptions.NillableNotAllowedException("Nullable is not allowed for element : TtIsikcSugu");
            }
            Writer.WriteEndElement();
            Writer.WriteStartElement("ttIsik.cDokument");
            if (clazz.TtIsikcDokument!=null) {
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "string");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdString(((string)(clazz.TtIsikcDokument))).ToString());
            }
            else {
                Writer.WriteAttributeString("xsi", "nil", null, "1");
            }
            Writer.WriteEndElement();
            Writer.WriteStartElement("ttIsik.cDok_nr");
            if (clazz.TtIsikcDokNr!=null) {
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "string");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdString(((string)(clazz.TtIsikcDokNr))).ToString());
            }
            else {
                Writer.WriteAttributeString("xsi", "nil", null, "1");
            }
            Writer.WriteEndElement();
            Writer.WriteStartElement("ttIsik.cLisainfo");
            if (clazz.TtIsikcLisainfo!=null) {
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "string");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdString(((string)(clazz.TtIsikcLisainfo))).ToString());
            }
            else {
                Writer.WriteAttributeString("xsi", "nil", null, "1");
            }
            Writer.WriteEndElement();
            Writer.WriteStartElement("ttIsik.cKustutatud");
            if (clazz.TtIsikcKustutatud!=null) {
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "string");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdString(((string)(clazz.TtIsikcKustutatud))).ToString());
            }
            else {
                Writer.WriteAttributeString("xsi", "nil", null, "1");
            }
            Writer.WriteEndElement();
        }
        
        public override void ReadXml(global::Xtee.Core.IXteeXmlReader Reader) {
            base.ReadXml(Reader);
        START:
            if ((Reader.LocalName == "ttIsik.iIsik_id")) {
                goto ttIsikiIsik_id;
            }
            else {
                if ((Reader.LocalName == "ttIsik.iIsik_uniq_id")) {
                    goto ttIsikiIsik_uniq_id;
                }
                else {
                    if ((Reader.LocalName == "ttIsik.cIkood")) {
                        goto ttIsikcIkood;
                    }
                    else {
                        if ((Reader.LocalName == "ttIsik.cEes")) {
                            goto ttIsikcEes;
                        }
                        else {
                            if ((Reader.LocalName == "ttIsik.cPere")) {
                                goto ttIsikcPere;
                            }
                            else {
                                if ((Reader.LocalName == "ttIsik.cIsa")) {
                                    goto ttIsikcIsa;
                                }
                                else {
                                    if ((Reader.LocalName == "ttIsik.dSyn")) {
                                        goto ttIsikdSyn;
                                    }
                                    else {
                                        if ((Reader.LocalName == "ttIsik.cSynnikoht")) {
                                            goto ttIsikcSynnikoht;
                                        }
                                        else {
                                            if ((Reader.LocalName == "ttIsik.cSynnikoht_lisa")) {
                                                goto ttIsikcSynnikoht_lisa;
                                            }
                                            else {
                                                if ((Reader.LocalName == "ttIsik.cElukoht")) {
                                                    goto ttIsikcElukoht;
                                                }
                                                else {
                                                    if ((Reader.LocalName == "ttIsik.cElukoht_lisa")) {
                                                        goto ttIsikcElukoht_lisa;
                                                    }
                                                    else {
                                                        if ((Reader.LocalName == "ttIsik.cKodakondsus")) {
                                                            goto ttIsikcKodakondsus;
                                                        }
                                                        else {
                                                            if ((Reader.LocalName == "ttIsik.dSurm")) {
                                                                goto ttIsikdSurm;
                                                            }
                                                            else {
                                                                if ((Reader.LocalName == "ttIsik.cSugu")) {
                                                                    goto ttIsikcSugu;
                                                                }
                                                                else {
                                                                    if ((Reader.LocalName == "ttIsik.cDokument")) {
                                                                        goto ttIsikcDokument;
                                                                    }
                                                                    else {
                                                                        if ((Reader.LocalName == "ttIsik.cDok_nr")) {
                                                                            goto ttIsikcDok_nr;
                                                                        }
                                                                        else {
                                                                            if ((Reader.LocalName == "ttIsik.cLisainfo")) {
                                                                                goto ttIsikcLisainfo;
                                                                            }
                                                                            else {
                                                                                if ((Reader.LocalName == "ttIsik.cKustutatud")) {
                                                                                    goto ttIsikcKustutatud;
                                                                                }
                                                                                else {
                                                                                    return;
                                                                                }
                                                                            }
                                                                        }
                                                                    }
                                                                }
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        ttIsikiIsik_id:
            if (Reader.IsElementNil()) {
                throw new global::Xtee.Core.Exceptions.NillableNotAllowedException(">>isik>ttIsik.iIsik_id");
            }
            clazz.TtIsikiIsikId = new global::Xtee.Core.Schema.XsdInteger(Reader.ReadElementString("ttIsik.iIsik_id")).Value;
            goto START;
        ttIsikiIsik_uniq_id:
            if (Reader.IsElementNil()) {
                throw new global::Xtee.Core.Exceptions.NillableNotAllowedException(">>isik>ttIsik.iIsik_uniq_id");
            }
            clazz.TtIsikiIsikUniqId = new global::Xtee.Core.Schema.XsdInteger(Reader.ReadElementString("ttIsik.iIsik_uniq_id")).Value;
            goto START;
        ttIsikcIkood:
            if ((Reader.IsElementNil() == false)) {
                clazz.TtIsikcIkood = new global::Xtee.Core.Schema.XsdString(Reader.ReadElementString("ttIsik.cIkood")).Value;
            }
            else {
                Reader.Skip();
            }
            goto START;
        ttIsikcEes:
            if (Reader.IsElementNil()) {
                throw new global::Xtee.Core.Exceptions.NillableNotAllowedException(">>isik>ttIsik.cEes");
            }
            clazz.TtIsikcEes = new global::Xtee.Core.Schema.XsdString(Reader.ReadElementString("ttIsik.cEes")).Value;
            goto START;
        ttIsikcPere:
            if (Reader.IsElementNil()) {
                throw new global::Xtee.Core.Exceptions.NillableNotAllowedException(">>isik>ttIsik.cPere");
            }
            clazz.TtIsikcPere = new global::Xtee.Core.Schema.XsdString(Reader.ReadElementString("ttIsik.cPere")).Value;
            goto START;
        ttIsikcIsa:
            if ((Reader.IsElementNil() == false)) {
                clazz.TtIsikcIsa = new global::Xtee.Core.Schema.XsdString(Reader.ReadElementString("ttIsik.cIsa")).Value;
            }
            else {
                Reader.Skip();
            }
            goto START;
        ttIsikdSyn:
            if ((Reader.IsElementNil() == false)) {
                clazz.TtIsikdSyn = new global::Xtee.Core.Schema.XsdDate(Reader.ReadElementString("ttIsik.dSyn")).Value;
            }
            else {
                Reader.Skip();
            }
            goto START;
        ttIsikcSynnikoht:
            if ((Reader.IsElementNil() == false)) {
                clazz.TtIsikcSynnikoht = new global::Xtee.Core.Schema.XsdString(Reader.ReadElementString("ttIsik.cSynnikoht")).Value;
            }
            else {
                Reader.Skip();
            }
            goto START;
        ttIsikcSynnikoht_lisa:
            if ((Reader.IsElementNil() == false)) {
                clazz.TtIsikcSynnikohtLisa = new global::Xtee.Core.Schema.XsdString(Reader.ReadElementString("ttIsik.cSynnikoht_lisa")).Value;
            }
            else {
                Reader.Skip();
            }
            goto START;
        ttIsikcElukoht:
            if ((Reader.IsElementNil() == false)) {
                clazz.TtIsikcElukoht = new global::Xtee.Core.Schema.XsdString(Reader.ReadElementString("ttIsik.cElukoht")).Value;
            }
            else {
                Reader.Skip();
            }
            goto START;
        ttIsikcElukoht_lisa:
            if ((Reader.IsElementNil() == false)) {
                clazz.TtIsikcElukohtLisa = new global::Xtee.Core.Schema.XsdString(Reader.ReadElementString("ttIsik.cElukoht_lisa")).Value;
            }
            else {
                Reader.Skip();
            }
            goto START;
        ttIsikcKodakondsus:
            if (Reader.IsElementNil()) {
                throw new global::Xtee.Core.Exceptions.NillableNotAllowedException(">>isik>ttIsik.cKodakondsus");
            }
            clazz.TtIsikcKodakondsus = new global::Xtee.Core.Schema.XsdString(Reader.ReadElementString("ttIsik.cKodakondsus")).Value;
            goto START;
        ttIsikdSurm:
            if ((Reader.IsElementNil() == false)) {
                clazz.TtIsikdSurm = new global::Xtee.Core.Schema.XsdDate(Reader.ReadElementString("ttIsik.dSurm")).Value;
            }
            else {
                Reader.Skip();
            }
            goto START;
        ttIsikcSugu:
            if (Reader.IsElementNil()) {
                throw new global::Xtee.Core.Exceptions.NillableNotAllowedException(">>isik>ttIsik.cSugu");
            }
            clazz.TtIsikcSugu = new global::Xtee.Core.Schema.XsdString(Reader.ReadElementString("ttIsik.cSugu")).Value;
            goto START;
        ttIsikcDokument:
            if ((Reader.IsElementNil() == false)) {
                clazz.TtIsikcDokument = new global::Xtee.Core.Schema.XsdString(Reader.ReadElementString("ttIsik.cDokument")).Value;
            }
            else {
                Reader.Skip();
            }
            goto START;
        ttIsikcDok_nr:
            if ((Reader.IsElementNil() == false)) {
                clazz.TtIsikcDokNr = new global::Xtee.Core.Schema.XsdString(Reader.ReadElementString("ttIsik.cDok_nr")).Value;
            }
            else {
                Reader.Skip();
            }
            goto START;
        ttIsikcLisainfo:
            if ((Reader.IsElementNil() == false)) {
                clazz.TtIsikcLisainfo = new global::Xtee.Core.Schema.XsdString(Reader.ReadElementString("ttIsik.cLisainfo")).Value;
            }
            else {
                Reader.Skip();
            }
            goto START;
        ttIsikcKustutatud:
            if ((Reader.IsElementNil() == false)) {
                clazz.TtIsikcKustutatud = new global::Xtee.Core.Schema.XsdString(Reader.ReadElementString("ttIsik.cKustutatud")).Value;
            }
            else {
                Reader.Skip();
            }
            goto START;
        }
    }
}
